#include <iostream>

using namespace std;

char a[11][11];
int lowz[11],lowr[11];
int colz[11],colr[11];
int n;
bool flg;
bool check(int x,int y)
{
	if(x-2>=1 && a[x][y]==a[x-1][y] && a[x][y]==a[x-2][y])
		return false;
	if(y-2>=1 && a[x][y]==a[x][y-1] && a[x][y]==a[x][y-2])
		return false;
	
	if(y==n)
	{
		int cnt=0;
		for(int i=1;i<=n;i++)
		{
			if(a[x][i]=='1')
				cnt++;
		}
		
		if(cnt!=n/2)
		{
			return false;
		}
		
		for(int i=x-1;i>=1;i--)
		{
			int k=0;
			for(k=1;k<=n;k++)
			{
				if(a[x][k]==a[i][k])
					continue;
				else break;
			}
			if(k==n+1)
				return false;	
		}
	}	
	if(x==n)
	{
		int cnt=0;
		for(int i=1;i<=n;i++)
		{
			if(a[i][y]=='1')
				cnt++;
		}
		if(cnt!=n/2)
		{
			return false;
		}
		for(int i=y-1;i>=1;i--)
		{
			int k=0;
			for(k=1;k<=n;k++)
			{
				if(a[k][i]==a[k][y])
					continue;
				else break;
			}
			if(k==n+1)
				return false;
	
				
		}
	}	
	return true;
}
void dfs(int x,int y)
{
	if(flg)
		return;
	if(x>n)
	{
		flg=true;
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=n;j++)
			{
				cout<<a[i][j];
			}
			cout<<endl;
		}
		return;
	}
	if(a[x][y]=='_')
	{
		a[x][y]='0';
		if(check(x,y))
		{
			if(y!=n)
				dfs(x,y+1);
			else
				dfs(x+1,1);
		}
		a[x][y]='1';
		if(check(x,y))
		{
			if(y!=n)
				dfs(x,y+1);
			else
				dfs(x+1,1);			
		}
		a[x][y]='_';
	}
	else{
		if(!check(x,y))
			return;
		if(y!=n)
			dfs(x,y+1);
		else
			dfs(x+1,1);
	}
}
int main()
{
	
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		getchar();
		for(int j=1;j<=n;j++)
		{
			cin>>a[i][j];
		}
	}

	flg=false;
	dfs(1,1);
	
	
	return 0;
}
